<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{
  /*
  |--------------------------------------------------------------------------
  | Login Controller
  |--------------------------------------------------------------------------
  |
  | This controller handles authenticating users for the application and
  | redirecting them to your home screen. The controller uses a trait
  | to conveniently provide its functionality to your applications.
  |
  */

  use AuthenticatesUsers;

  /**
   * Where to redirect users after login.
   *
   * @var string
   */
  protected $redirectTo = '/';

  /**
   * Create a new controller instance.
   *
   * @return void
   */
  public function __construct()
  {
    $this->middleware('guest')->except('logout');
  }

  /**
   * Send the response after the user was authenticated.
   *
   * @param  \Illuminate\Http\Request $request
   * @return \Illuminate\Http\JsonResponse
   */
  protected function sendLoginResponse(Request $request)
  {

    $this->clearLoginAttempts($request);
    $token = (string)$this->guard()->getToken();
    $expiration = $this->guard()->getPayload()->get('exp');
    $user = $this->guard()->user();
    $user->load('avatar');

    return $this->result(true, [
      'token' => $token,
      'token_type' => 'bearer',
      'expires_in' => $expiration - time(),
      'user' => $this->guard()->user()
    ]);
  }

  protected function attemptLogin(Request $request)
  {
    $token = $this->guard()->attempt(
      $this->credentials($request)
    );
    if ($token) {
      $this->guard()->setToken($token);
      return true;
    }
    return false;
  }
}
